/**
 * Copyright 2010 Tristan Slominski
 *
 * Licensed under the MIT License (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.opensource.org/licenses/mit-license.php
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mindash.handlebars.client.services.impl;

import com.google.gwt.core.client.GWT;
import com.google.inject.Inject;
import com.mindash.handlebars.client.places.AtPlace;
import com.mindash.handlebars.client.places.StarterProjectPlaces;
import com.mindash.handlebars.client.providers.StarterProjectAtPlaceProvider;
import com.mindash.handlebars.client.providers.StarterProjectGoToPlaceProvider;
import com.mindash.handlebars.client.services.EventBus;
import com.mindash.handlebars.client.services.StarterProjectPlaceService;

/**
 * @author "Tristan Slominski"
 * 
 */
public class StarterProjectPlaceServiceImpl extends DefaultPlaceServiceImpl
    implements StarterProjectPlaceService {

  /* injected dependencies */
  @Inject
  private StarterProjectAtPlaceProvider starterProjectAtPlaceProvider;

  @Override
  public AtPlace<?> createThePlaceObject(String placeName) {
    AtPlace<?> place = null;
    if (StarterProjectPlaces.dashboardPage.equals(placeName)) {
      place = starterProjectAtPlaceProvider.getAtDashboardPage();
    } else if (StarterProjectPlaces.landingPage.equals(placeName)) {
      place = starterProjectAtPlaceProvider.getAtLandingPage();
    } else {
      GWT.log("could not identify place '" + placeName + "'",
          new IllegalArgumentException());
    }
    return place;
  }

  @Override
  public void registerHandlersToAllPlaces(EventBus eventBus) {
    eventBus.addHandler(StarterProjectGoToPlaceProvider.goToDashboardPageType,
        this);
    eventBus.addHandler(StarterProjectGoToPlaceProvider.goToLandingPageType,
        this);
  }

}
